home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-07 / netusers.zip / GETDATA.C < prev    next >
Text File  |  1993-03-01  |  3KB  |  129 lines

  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. #include "nos.h"
  5. #include "noslib.h"
  6. #include "netusers.h"
  7. #include "proto.h"
  8.  
  9. extern struct serverdef *server;
  10. extern struct localuserlistdef *localuserlist;
  11. extern struct localuserlistdef *previous_localuserlist;
  12. extern struct localuserlistdef *startup_localuserlist;
  13.  
  14. extern int currentserver, adaptornum, numberoflogins, currentprinter, found;
  15. extern int userlistjobcount, printjobcount;
  16. extern int maxlocaluserlistcount, localuserlistcount;
  17.  
  18. extern struct PS serverps;
  19. extern struct time_block servertime;
  20. extern struct active_user_entry serveraue;
  21.  
  22.  
  23. void getserverinfo ()
  24.     {
  25.     char buf [2 * D_NAMESZ + 10];
  26.     int i;
  27.  
  28.     //    Loop through each server that the user is logged into
  29.  
  30.     purgelocaluserlist ();
  31.  
  32.     currentserver = 0;
  33.     localuserlistcount = 0;
  34.  
  35.     while (currentserver < numberoflogins)
  36.     {
  37.     //  Record the Server's Date & Time
  38.  
  39.     if (NOSGetTime (&servertime, server [currentserver] .servername) == -1)
  40.         NOSperror ("NOSGetTime");
  41.     else
  42.         server [currentserver] .time = servertime;
  43.  
  44.     currentserver++;
  45.     }
  46.  
  47.     currentserver = 0;
  48.     localuserlistcount = 0;
  49.  
  50.     while (currentserver < numberoflogins)
  51.     {
  52.     //    Import Active User List from current server
  53.  
  54.     userlistjobcount = 0;
  55.     printjobcount = 0;
  56.  
  57.     while (NOSGetUserInfo (&userlistjobcount, &serveraue, server [currentserver] .servername) != -1)
  58.         {
  59.         if (localuserlistcount >= maxlocaluserlistcount)
  60.         {
  61.         if ( (localuserlist = (struct localuserlistdef *)
  62.             realloc (localuserlist,
  63.             localuserlistcount * sizeof (struct localuserlistdef)))
  64.             ==  (struct localuserlistdef *) 0)
  65.             {
  66.             printf ("Couldn't reallocate space for userlist\n");
  67.             exit (1);
  68.             }
  69.  
  70.         if ( (startup_localuserlist = (struct localuserlistdef *)
  71.             realloc (startup_localuserlist,
  72.             localuserlistcount * sizeof (struct localuserlistdef)))
  73.             ==  (struct localuserlistdef *) 0)
  74.             {
  75.             printf ("Couldn't reallocate space for previous userlist\n");
  76.             exit (1);
  77.             }
  78.  
  79.         if ( (previous_localuserlist = (struct localuserlistdef *)
  80.             realloc (previous_localuserlist,
  81.             localuserlistcount * sizeof (struct localuserlistdef)))
  82.             ==  (struct localuserlistdef *) 0)
  83.             {
  84.             printf ("Couldn't reallocate space for previous userlist\n");
  85.             exit (1);
  86.             }
  87.  
  88.         maxlocaluserlistcount++;
  89.         }
  90.         strcpy (localuserlist [localuserlistcount] .AUE_machine,
  91.         serveraue .AUE_machine);
  92.  
  93.         i = strlen (serveraue .AUE_machine);
  94.         while (serveraue .AUE_machine [--i] == ' ');
  95.         serveraue .AUE_machine [++i] = '\0';
  96.  
  97.         if (serveraue .AUE_VCID < 0x100)
  98.         sprintf (buf, "%s @ %s\0", serveraue .AUE_name,
  99.             serveraue .AUE_machine);
  100.         else
  101.         sprintf (buf, "%s @ %s *\0", serveraue .AUE_name,
  102.             serveraue .AUE_machine);
  103.  
  104.         buf [25] = '\0';
  105.  
  106.         strcpy (localuserlist [localuserlistcount] .name_machine, buf);
  107.  
  108.         for (i = 0; i < 3; i++)
  109.         localuserlist [localuserlistcount] .AUE_requests [i] =
  110.             serveraue .AUE_requests [i];
  111.  
  112.         localuserlist [localuserlistcount] .server      = currentserver;
  113.         localuserlistcount++;
  114.         }
  115.     currentserver++;
  116.     }
  117.     qsort ( (void *) localuserlist, localuserlistcount, sizeof (struct localuserlistdef), comparestring);
  118.     }
  119.  
  120.  
  121.  
  122. void purgelocaluserlist ()
  123.     {
  124.     int i;
  125.  
  126.     for (i = 0; i < maxlocaluserlistcount + 1; i++)
  127.     localuserlist [i] .server = -1;
  128.     }
  129.